From 92585dd6a9557b7d4842260cdb2d2a4da0d5f854 Mon Sep 17 00:00:00 2001 From: Fengzhe Zhang Date: Thu, 27 Jan 2011 11:31:46 +0000 Subject: [PATCH] vtd: Fix for irq bind failure after PCI attaching 32 times Originally when detaching a PCI device, pirq_to_emuirq and pirq_to_irq are freed via hypercall do_physdev_op. Now in function pt_irq_destroy_bind_vtd, duplicated logic is added to free pirq_to_emuirq, but not pirq_to_irq. This causes do_physdev_op fail to free both emuirq and irq. After attaching a PCI device for 32 times, irq resources run out. This patch removes the redundant logic. Signed-off-by: Fengzhe Zhang --- xen/drivers/passthrough/io.c | 1 - 1 file changed, 1 deletion(-) diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c index 6e85b6b654..86ae0af14f 100644 --- a/xen/drivers/passthrough/io.c +++ b/xen/drivers/passthrough/io.c @@ -375,7 +375,6 @@ int pt_irq_destroy_bind_vtd( hvm_irq_dpci->mirq[machine_gsi].dom = NULL; hvm_irq_dpci->mirq[machine_gsi].flags = 0; clear_bit(machine_gsi, hvm_irq_dpci->mapping); - unmap_domain_pirq_emuirq(d, machine_gsi); } } spin_unlock(&d->event_lock); -- 2.30.2